layui.use('table', function () {
    var table = layui.table,
        form = layui.form,
        $ = layui.jquery;
    //方法级渲染
    table.render({
        elem: '#tablesCode'
        , url: '/table/list'
        , toolbar: '#toolbarTable'
        , title: '代码生成表'
        , totalRow: true
        , id: "tablesId"
        , cols: [[
            {checkbox: true, fixed: true}
            , {field: 'tableName', title: '表名称', width: 180, sort: true}
            , {field: 'tableComment', title: '表注释', width: 150, sort: true}
            , {field: 'flagName', title: '生成', width: 80, sort: true}
            , {field: 'absolutePathWeb', title: '绝对路径web', width: 150, sort: true}
            , {field: 'contentPathWeb', title: '项目路径web', width: 120, sort: true}
            , {field: 'author', title: '作者', width: 140, sort: true}
            , {field: 'createDate', title: '生成时间', width: 160, sort: true}
            , {field: 'module', title: '生成模块', width: 300, sort: true}
            , {field: 'method', title: '生成api', width: 300, sort: true}
        ]]
        , even: true
        , page: true //是否显示分页
        , skip: true //开启跳页
        , limits: [10, 20, 30]
        , width: 1700
        , height: 'full-120'
        , limit: 10 //每页默认显示的数量
        , parseData: function (res) { //res 即为原始返回的数据
            var data = res.data;
            return {
                "code": status, //解析接口状态   （好像必须是0 才可以）
                "msg": data.desc, //解析提示文本
                "count": data.total, //解析数据长度
                "data": data.records //解析数据列表
            };
        }
    });

    //头工具栏事件
    table.on('toolbar(tablesCode)', function (obj) {
        var data = table.checkStatus(obj.config.id).data;
        switch (obj.event) {
            case 'addCode':
                addCode();
                break;
            case 'ignoreAdd':
                ignoreAdd();
                break;
            case 'regenerate':
                regenerate(data);
                break;
        }
        ;
    });

    function addCode() {
        layer.open({
            type: 2,
            title: '新增代码',
            area: ['900px', '600px'],
            fix: false, //
            closeBtn: false,
            shift: 2,
            shadeClose: true,
            content: ["codeAdd.html", 'no'],
            success: function (layero, index) {
                form.render();
            },
            yes: function () {
            }
        });
    }
    function progressDisplay() {
        layer.open({
            type: 2,
            title: '自动生成代码进度',
            area: ['500px', '300px'],
            fix: false, //
            closeBtn: true,
            shift: 2,
            shadeClose: false,
            content: ["progressDisplay.html", 'no'],
            success: function (layero, index) {
                form.render();
            },
            yes: function () {
            }
        });
    }

    function ignoreAdd() {
        layer.open({
            type: 2,
            title: '添加忽略生成的表,此数据代表已经生成项目代码',
            area: ['600px', '600px'],
            fix: false, //
            closeBtn: false,
            shift: 2,
            shadeClose: true,
            content: ["ignoreAdd.html", 'no'],
            success: function (layero, index) {
            },
            yes: function () {
            }
        });

    }

    function regenerate(data) {
        if (checkForRegenerate(data)){
            $.ajax({
                url: '/table/regenerate',
                data: JSON.stringify(data),
                dataType: "json",
                contentType: "application/json;charset=utf-8",
                type: "POST",
                success: function (result) {
                    progressDisplay();
                }
            })
        }
    }
    function checkForRegenerate(data) {
        if (data.length==0){
            layer.msg('请勾选需要重新生成的代码表！', {icon: 2, time: 2000})
            return false;
        }else {
            for (var i = 0; i < data.length; i++ ){
                if (data[i].flag===2){
                    layer.msg('所勾选部分有已忽略表数据,请重新选择！', {icon: 2, time: 2000})
                    return false;
                }
            }
        }
        return true;
    }
    var active = {
        selectTable: function () {
            var content = $('#content');
            //执行重载
            table.reloadData('tablesId', {
                method: 'get',
                page: {
                    curr: 1 //重新从第 1 页开始
                }
                , where: {
                    content: content.val()
                }
            }, 'data');
        },
    };

    $('.demoTable .layui-btn').on('click', function () {
        var type = $(this).data('type');
        active[type] ? active[type].call(this) : '';
    });

});